///--------------------------------------------------
/**
 *
 *      Hand Gesture Recognition System
 *
 */
//--------------------------------------------------
/**
 * //LISTENER CLASS//
 * Escucha de los hilos de proceso
 *
 * @author  Edwin Cobos & Cesar Murcia & Wilson Sarmiento
 * @version HGR_v1.5
 *
 * Revisado: 20/02/12
 */
//--------------------------------------------------
//PACKAGE//
package HGR;
//IMPORT//
//--------------------------------------------------

import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *Escucha de los hilos de proceso, Heredado de la clase Thread de Java
 */
public class Listener extends Thread
{
    //--------------------------------------------------
    public Listenable m_Listen;
    public boolean continuar = true;
    public boolean pause = false;    
     //--------------------------------------------------
    /*
     * Corre el proceso mientras (continuar=false)
     */
    @Override
    public void run()
    {
        //int count = 0;
        System.out.println("Inicio Hilo");
        while(continuar)
        {
            System.out.println("Hilo 0");
            m_Listen.Listen();
            while(pause == true)
            {
                System.out.print("");

            }
            System.out.println("Hilo 1");
        }
        System.out.println("Fin Hilo");
    }
     //--------------------------------------------------
    /*
     * Finaliza el hilo verificando si esta corriendo.
     */
    public void Finalize()
    {        
        if(isAlive())
        {
            //this.interrupt();
            continuar = true;            
        }
    }
     //--------------------------------------------------
    /**
     * Pausa el hilo verificando si esta corriendo.
     */
    public void Pause()
    {
        if(isAlive())
        {
            if(pause == true)
                pause = false;
            else if(pause == false)
                pause = true;
        }
    }
    //--------------------------------------------------
    /**
     * Establece el objeto a ser escuchado proveniente de una clase @Listeneable
     * @param Listen
     */
    public void setListenable(Listenable Listen)
    {
         m_Listen = Listen;
    }
}
//--------------------------------------------------
//FIN
//--------------------------------------------------

